<?php

namespace App\Http\Controllers\Admin;

use App\Http\Models\Member;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Response;

class MemberController extends Controller
{
    public function add(Request $request)
    {
        if($request->isMethod('POST')){
            //表单数据接收
            $data = $request->except(['_token']);
            // 文件信息，上传的图片信息 laravel里面的文件上传功能，需要注意：在laravel里面完成的上传属于http的请求，没提过一个专门的章节完成文件上传，归属于http的请求，提供了几个有用的方法完成文件上传处理。
            if( $request->hasFile('avatar') && $request->file('avatar')->isValid() ){
                // 文件转存
                $targetMovePath = 'uploads';// 目录相对于 index.php 也就是在 /public目录下
                $fileName = uniqid() . '.' . $request->file('avatar')->getClientOriginalExtension();
                $request->file('avatar')->move($targetMovePath, $fileName); // 第一个参数上传目录，相对于index.php来保存，也可以设置绝对路径 第二个参数文件名称
                $data['avatar'] = $targetMovePath . '/' . $fileName; // 图片的磁盘路径
                // 下去，实现头像的裁剪功能。composer管理的类库
            }

            $status = Member::create($data);
            if($status){
                // 成功上传
                return Response::json([
                    'status' => 'success',
                    'code' => 1000,
                    'msg' => '会员添加成功！',
                    'data' => $status,
                ]);
            }else{
                // 失败
                return Response::json([
                    'status' => 'failure',
                    'code' => 1002,
                    'msg' => '会员添加失败！',
                ]);
            }



        }
        return view('admin.member.add');
    }

    public function lst()
    {
        // 展示会员的信息 完全等同后台的用户的展示
        $size = 10;
        $memberData = Member::paginate($size);

        return view('admin.member.lst', compact('memberData'));
    }

    // 完成laravel本地上传
    public function laravel(Request $request)
    {
        // 完成上传 文件上传一样 插件并不知道 file里面的name属性的值
        if( $request->hasFile('file') && $request->file('file')->isValid() ){
            // 文件转存
            $targetMovePath = 'uploads';// 目录相对于 index.php 也就是在 /public目录下
            $fileName = uniqid() . '.' . $request->file('file')->getClientOriginalExtension();
            $request->file('file')->move($targetMovePath, $fileName); // 第一个参数上传目录，相对于index.php来保存，也可以设置绝对路径 第二个参数文件名称
            $fullName = $targetMovePath . '/' . $fileName; // 图片的磁盘路径
            return Response::json([
                'status' => 'success',
                'code' => 1000,
                'msg' => '上传成功',
                'data' => $fullName, // 上传后的图片路径
            ]);
        }
    }

    public function qiniu(Request $request)
    {
        // 当用户上传图片，调用七牛云的API进行图片的云存储
        if( $request->hasFile('file') && $request->file('file')->isValid() ){
            // 文件名称
            $fileName = uniqid() . '.' . $request->file('file')->getClientOriginalExtension();
            // 不想将用户的图片保存在本地，而是保存调用七牛云的存储，保存在云服务器上
           /* $disk = \Storage::disk('qiniu');// 七牛云的实例对象 disk方法的参数, filesystem.php里面的配置
            $contents = File::get( $request->file('file')->getRealPath() ); // 获取图片的资源 等价 file_get_contentes('1.txt')
            $disk->put($fileName, $contents); // 第一个参数：文件的名称 第二个参数：是文件资源，（二进制的资源信息） 1. 图片的绝对路径 2. 想办法读取图片的资源
            // 获取上传的图片的url地址
            $url = $disk->getDriver()->downloadUrl($fileName);// 参数为获取文件的名称
            */
            $disk = \Storage::disk('public');
            $contents = File::get( $request->file('file')->getRealPath() );
            $disk->put($fileName, $contents); // 存储本地的何处呢？ 问题：保存在 C:\phpStudy\WWW\laravel54.com\storage\app\public这里，用户如何访问呢，在部署网站的时候，网站的根目录指向的是public目录下。如果要访问storage是无法访问。

            // 如果我们不想将图片存储到云服务器上面，也可以将图片存储到本地服务器。
            return Response::json([
                'status' => 'success',
                'code' => 1000,
                'msg' => '七牛云上传成功',
                'data' => $fileName, // 上传后的图片路径
            ]);
        }

    }
}
